home *** CD-ROM | disk | FTP | other *** search
/ Creative Computers / Creative Computers CD-ROM, Volume 1 (Legendary Design Technologies, Inc.)(1994).iso / shareware / music / edplayer_2.1 / wport.c < prev   
C/C++ Source or Header  |  1994-11-17  |  2KB  |  57 lines

  1. /* wport.    Wait for Port to appear, by Ed Mackey */
  2. /* Source and binary are Public Domain.            */
  3.  
  4. /* Example script:  runback EdPlayer  ;start EdPlayer
  5.                     wport EDPLAYER    ;wait for EdP to get ready
  6.                     telled ...        ;send some EdP commands
  7. */
  8.  
  9. #include <stdio.h>
  10. #include <functions.h>
  11.  
  12. struct Library *GfxBase;
  13.  
  14. main(argc,argv)
  15. int argc;
  16. char *argv[];
  17. {
  18.  
  19.     char portname[255];
  20.     long time,failc,i;
  21.  
  22.     time = 30;  /* Max time to wait, in seconds.       */
  23.                 /* PAL machines may wait a bit longer. */
  24.                 /* If port appears (like it should) before the time */
  25.                 /* expires, the command returns immediately.        */
  26.  
  27.     failc = 10; /* How bad to fail if port doesn't show up */
  28.  
  29.     GfxBase = OpenLibrary("graphics.library",0l);
  30.  
  31.     if (argc == 2)
  32.         if (!(strcmp(argv[1],"?")))   /* for "wport ?" */
  33.             argc = 1;
  34.  
  35.     if (argc != 2)
  36.     {
  37.         printf("USAGE: wport <portname>           ;by Ed Mackey.\n");
  38.         printf("   Waits about %d seconds for ARexx port to appear.\n",time);
  39.         printf("   Returns when port appears, or fails if time expires.\n");
  40.         printf("   PORT NAMES ARE CASE SENSITIVE.\n");
  41.         printf("   Example:  wport EDPLAYER\n");
  42.         printf("      This example waits for EdPlayer's ARexx port to open.\n");
  43.     } else {
  44.         i = time * 60;  /* Calculate approx. number of VBLANKs to wait */
  45.         strcpy(portname,argv[1]);
  46.         do
  47.         {
  48.             WaitTOF();  /* This is to prevent busy waiting. */
  49.             if(FindPort(portname))
  50.                 i = failc = 0;
  51.         } while (--i > 0);
  52.     }
  53.  
  54.     CloseLibrary(GfxBase);
  55.     exit(failc);
  56. }
  57.